package com.wonders.hisdoctor.station.project.base.domain;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.wonders.his.common.utils.validator.group.InsertGroup;
import com.wonders.his.common.utils.validator.group.PrimaryGroup;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.ToString;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;

/**
 * <p>患者疫苗接种登记表</p>
 * <p>db_table: PAT_VACCINE_REGISTER</p>
 * @author 张澎_9970
 * @date 2021/06/24
 */
@ApiModel("患者疫苗接种登记表")
@Accessors(chain = true)
@Data
@ToString
@TableName("PAT_VACCINE_REGISTER")
public class PatVaccineRegister implements Serializable {

    private static final long serialVersionUID = 7898952035733858676L;

    /** `主键` db_field: VACCINE_REGISTER_ID; desc: 疫苗接种登记ID */
    @ApiModelProperty("疫苗接种登记ID")
    @TableId
    @NotNull(message = "疫苗接种登记ID不能为空", groups = PrimaryGroup.class)
    @TableField("VACCINE_REGISTER_ID")
    private String vaccineRegisterId;

    /** db_field: PATIENT_ID; desc: 病人标识号 */
    @ApiModelProperty("病人标识号")
    @TableField("PATIENT_ID")
    private String patientId;

    /** db_field: ID_NO; desc: 身份证号 */
    @ApiModelProperty("身份证号")
    @TableField("ID_NO")
    @NotBlank(message = "身份证号, 不能为空", groups = InsertGroup.class)
    private String idNo;

    /** db_field: IDENTITY; desc: 身份：由身份登记子系统生成，住院登记子系统在办理入院时更新。使用规范名称，由用户定义，见1.6身份字典 */
    @ApiModelProperty("身份：由身份登记子系统生成，住院登记子系统在办理入院时更新。使用规范名称，由用户定义，见1.6身份字典")
    @TableField("IDENTITY")
    private String identity;

    /** db_field: SEX; desc: 性别：男、女、未知，本系统定义，见1.1性别字典 */
    @ApiModelProperty("性别：男、女、未知，本系统定义，见1.1性别字典")
    @TableField("SEX")
    @NotBlank(message = "性别, 不能为空", groups = InsertGroup.class)
    private String sex;

    /** db_field: NAME; desc: 姓名：病人姓名 */
    @ApiModelProperty("姓名：病人姓名")
    @TableField("NAME")
    @NotBlank(message = "病人姓名, 不能为空", groups = InsertGroup.class)
    private String name;

    /** db_field: DATE_OF_BIRTH; desc: 出生日期 */
    @ApiModelProperty("出生日期")
    @TableField("DATE_OF_BIRTH")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
    private Date dateOfBirth;

    /** db_field: WORK_UNIT; desc: 工作单位 */
    @ApiModelProperty("工作单位")
    @TableField("WORK_UNIT")
    private String workUnit;

    /** db_field: CARD_NO; desc: 卡号 */
    @ApiModelProperty("卡号")
    @TableField("CARD_NO")
    private String cardNo;

    /** db_field: REGISTER_DATE; desc: 登记日期 */
    @ApiModelProperty("登记日期")
    @TableField("REGISTER_DATE")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
    private Date registerDate;

    /** db_field: REGISTER_ID; desc: 登记人ID */
    @ApiModelProperty("登记人ID")
    @TableField("REGISTER_ID")
    private String registerId;

    /** db_field: REGISTER_NAME; desc: 登记人名称 */
    @ApiModelProperty("登记人名称")
    @TableField("REGISTER_NAME")
    private String registerName;

    /** db_field: REGISTER_STATUS; desc: 登记状态：0 无效 1 有效 9 删除 */
    @ApiModelProperty("登记状态：0 无效 1 有效 9 删除")
    @TableField("REGISTER_STATUS")
    private String registerStatus;

    /** db_field: HOSPITAL_CODE; desc: 医院代码 */
    @ApiModelProperty("医院代码")
    @TableField("HOSPITAL_CODE")
    private String hospitalCode;

    @ApiModelProperty("国籍")
    private String citizenship;

    @ApiModelProperty("地址")
    @NotBlank(message = "地址, 不能为空", groups = InsertGroup.class)
    private String address;

    @ApiModelProperty("电话")
    @NotBlank(message = "电话, 不能为空", groups = InsertGroup.class)
    private String telephone;

    @ApiModelProperty("监护人姓名")
    private String guardian;

}